package binary_tree

// 对称二叉树，如果一颗二叉树和它的镜像一样 那么它是对称的

// 通过比较二叉树的前序遍历序列和对称前序遍历序列来判断二叉树是不是对称的
// 如果这两个序列是一样的，那么二叉树是对称的

func Symmetry(p *TreeNode) bool {
	return symmetry(p, p)
}

func symmetry(r1, r2 *TreeNode) bool {
	if r1 == nil && r2 == nil {
		return true
	}
	if r1 == nil || r2 == nil {
		return false
	}
	if r1.val != r2.val {
		return false
	}

	return symmetry(r1.left, r2.right) && symmetry(r1.right, r2.left)
}
